The invention relates to programmable logic devices (PLDs) including specialized logic blocks. More particularly, the invention relates to structures and methods for including processor capabilities in RAM blocks in an existing PLD architecture with minimal disruption to the existing general interconnect structure.
Programmable logic devices (PLDs) are a well-known type of digital integrated circuit that can be programmed to perform specified logic functions. One type of PLD, the field programmable gate array (FPGA), typically includes an array of configurable logic blocks (CLBs) and programmable input/output blocks (IOBs). The CLBs and IOBs are interconnected by a programmable general interconnect structure.
The interconnect structure and logic blocks are typically programmed by loading a stream of configuration data (bitstream) into internal configuration memory cells that define how the logic blocks and interconnect are configured. The configuration data can be read from memory (e.g., an external PROM) or written into the FPGA by an external device. The collective states of the individual memory cells then determine the function of the FPGA.
Some FPGAs include blocks of dedicated logic in the CLB array. xe2x80x9cDedicated logicxe2x80x9d is hard-coded logic designed to perform a specific function, although the dedicated logic can be programmable to modify the function. For example, the Xilinx Virtex(copyright)-II FPGA includes blocks of Random Access Memory (BRAM), as shown in FIG. 1. The Xilinx Virtex-II FPGA is described in detail in pages 33-75 of the xe2x80x9cVirtex-II Platform FPGA Handbookxe2x80x9d, published December, 2000, available from Xilinx, Inc., 2100 Logic Drive, San Jose, Calif. 95124, which pages are incorporated herein by reference.
As shown in FIG. 1, in the Virtex-II FPGA the array of logic blocks and programmable general interconnect is designed as an array of xe2x80x9ctilesxe2x80x9d. The tile approach both facilitates the physical implementation of the programmable interconnect structure and makes feasible the routing software that implements a user design in the FPGA. One tile can include, for example, a CLB 104, which includes a block of logic (configurable logic element or CLE 101a). Each CLB includes an interconnect area 105 in addition to the CLE 101, and in fact interconnect area 105 typically consumes a much larger percentage of the available area than CLE 101.
As is well known in the art, interconnect area 105 includes a hierarchy of interconnect lines and several switch matrices for programmably coupling the interconnect lines to each other and to input and output ports of the CLE. Thus, interconnect area 105 constitutes a portion of the programmable general interconnect structure of the FPGA.
In the Virtex-II FPGA, each BRAM block 106 consumes more than one tile in the CLB array, as shown in FIG. 1. The RAM logic 103 is surrounded by programmable interconnect 107, e.g., similar to interconnect 105 in CLB 104. As in CLB 104, the interconnect area of the BRAM block consumes a significant amount of the surface area available for the block.
The tiles devoted to implementing specialized functions are often arranged in columns, as shown in FIG. 1, to simplify the routing of user designs. Another advantage of placing the specialized blocks in separate columns is that the specialized tiles can be of a different width from the CLB tiles. When a columnar arrangement is used, the height of each specialized block is the same as, or a multiple of, the height of one CLB tile.
In the Virtex-II FPGA, more than one column of CLBs typically separates each column of BRAM blocks, as shown on page 60 of the Virtex-II Platform FPGA Handbook, referenced above. In FIG. 1, only one column of CLBs is shown between each column of BRAM blocks, to clarify the figure.
More advanced FPGAs can include more complicated logic blocks in the CLB array. For example, the Xilinx Virtex-II Pro(trademark) FPGA includes embedded processor blocks in addition to the blocks available in the Virtex-II FPGA. The Xilinx Virtex-II Pro FPGA is described in detail in pages 19-71 of the xe2x80x9cVirtex-II Pro Platform FPGA Handbookxe2x80x9d, published Oct. 14, 2002 and available from Xilinx, Inc., which pages are incorporated herein by reference.
FIG. 2 shows how the processor blocks are embedded in the Virtex-II Pro CLB array. In essence, the BRAM blocks illustrated in FIG. 1 are spread apart vertically to provide room for additional tile rows that include the processor blocks. (In the Virtex-II Pro CLB arrays, a processor block typically covers many more tiles than are shown in FIG. 2, both vertically and horizontally. The number of tiles has been reduced in the figure, for clarity.) Each processor block includes a processor (uP 211), two on-chip memory control blocks (OCMs 212a, 212b), and programmable interconnect 213. The processor and the OCMs are tightly coupled together, i.e., they are interconnected by a dedicated interface rather than being coupled together using the programmable interconnect structure of the FPGA. Additionally, the OCMs provide dedicated interfaces between the processor 211 and the adjacent BRAM blocks 103a-103d. 
The OCMs serve two main purposes. Firstly, and most obviously, the OCMs function to adapt the defined interface required by the processor 211 to the needs of the BRAM blocks. For example, the OCMs perform address decoding functions. Additionally, however, the interface between the processor 211 and RAM logic 103 might not be able to function at the same maximum frequency as the processor itself. By operating the OCM blocks at a slower clock frequency than the processor, the processor is freed from having to accommodate this external frequency limitation.
However, there are many applications where it is desirable to operate an electronic system at the highest possible clock frequency. Many of these systems can also benefit from the advantages of reprogrammability. Therefore, it is desirable to provide programmable logic devices (PLDs) incorporating processor functionality wherein the memory access speed of the embedded processors is not limited by timing delays built into memory control blocks.
Further, there are many applications that can benefit from the availability of processor functionality in a PLD, but do not require the computing power provided, for example, by the powerful processors included in the Virtex-II Pro FPGA. Many PLD users would benefit from the addition of processor capability, but prefer a lower cost to a larger die size (and the consequent increase in price) including processor capability. Further, some PLD users do not need and would not use the processor capability. It is desirable to provide a PLD that can meet the needs of each of these users. Therefore, it is desirable to provide processor capability in a PLD while minimizing the increase in die size caused by the modification.
It is further desirable to minimize the disruption to the fabric of the PLD. When the processor is not used, it is desirable to have the capability of making the presence of the processor transparent to the user. Further, it is desirable to minimize the effect on the PLD routing software of modifying the PLD to include processor capability.
The invention provides structures and methods of including processor capabilities in an existing PLD architecture with minimal disruption to the existing general interconnect structure. In a PLD including a column of block RAM (BRAM) blocks, the BRAM blocks are modified to create specialized logic blocks including a RAM, a processor, and a dedicated interface coupled between the RAM, the processor, and the general interconnect structure of the PLD. The interconnect structure uses the majority of the die area within the BRAM block, and the interconnect structure is retained virtually unchanged from the BRAM block. Thus, the addition of the processor and dedicated interface causes the area of the block to increase only slightly. This additional area is obtained by increasing the width of the column of BRAM blocks, e.g., by a small fraction of one block width.
Because the interconnect structure remains virtually unchanged, the interconnections between the specialized logic blocks and the adjacent tiles are already in place, and the modifications do not affect the PLD routing software.
In some embodiments, the processor can be optionally disabled, (e.g., by setting a bit in a configuration memory cell) in which case the processor becomes transparent to the user. In other embodiments, the enable signal is a user-controlled signal, e.g., coupled to the general interconnect structure.
In some embodiments, the specialized logic blocks replace two or more BRAM blocks. In one such embodiment, a specialized logic block includes one RAM used for processor data and another RAM used for processor instructions. Thus, this specialized logic block replaces two BRAM blocks that are vertically adjacent in the column of BRAM blocks.
Because the processor is laid out in close proximity to the RAM, the interface between the two circuits can be relatively fast. Therefore, in some embodiments the dedicated interface and the processor operate at the same clock frequency.
Other embodiments of the invention provide methods of modifying a PLD including columns of BRAM blocks and columns of programmable logic blocks programmably interconnected by a general interconnect structure, to include the structures and provide the capabilities described above.
According to one embodiment, a programmable logic device (PLD) includes a plurality of programmable logic blocks arranged in an array of rows and columns, a general interconnect structure programmably interconnecting the programmable logic blocks, and a column of specialized logic blocks disposed between two columns of programmable logic blocks within the array. Each specialized logic block includes a first random access memory (RAM), a processor, and a dedicated interface coupled between the first RAM and the processor and further programmably coupled to the general interconnect structure.
According to another embodiment, a system includes a system bus, at least one peripheral device coupled to the system bus, and a PLD substantially as described above.
Another aspect of the invention provides a method of modifying a PLD including columns of BRAM blocks and columns of programmable logic blocks programmably interconnected by a general interconnect structure. Each BRAM block includes a RAM and a plurality of terminals coupling the RAM to the general interconnect structure. The method includes, for each BRAM block in a first column of BRAM blocks, widening the BRAM block to create a specialized logic block wider but having the same height as the BRAM block. The terminals of the specialized logic block have corresponding locations to the terminals of the BRAM block. The specialized logic block is then modified to include a processor and a dedicated interface coupled to the RAM from the BRAM block and to the processor, and further coupled to the general interconnect structure via the terminals of the specialized logic block.
According to another embodiment, another method is provided of modifying a PLD including columns of BRAM blocks and columns of programmable logic blocks programmably interconnected by a general interconnect structure. Each BRAM block includes a RAM and a plurality of terminals coupling the RAM to the general interconnect structure. The method includes, for each group of adjacent BRAM blocks within a column, selecting a first group of adjacent BRAM blocks within the column to create a specialized logic block, and widening the specialized logic block to be wider but to have the same height as the first group of adjacent BRAM blocks. The terminals of the specialized logic block have corresponding locations to the terminals of the first group of BRAM blocks. The specialized logic block is then modified to include a processor and a dedicated interface coupled to the RAMs from each of the first group of BRAM blocks and to the processor, and further coupled to the general interconnect structure via the terminals of the specialized logic block.
According to another embodiment, a method is provided of designing a new PLD based on an existing PLD architecture. The existing PLD architecture includes columns of BRAM blocks included in an array comprising rows and columns of programmable logic blocks programmably interconnected by a general interconnect structure. The method includes removing a column of the BRAM blocks, widening a space between two columns of programmable logic blocks adjacent to the removed column of BRAM blocks to create an enlarged area, creating a specialized logic block, and inserting in the enlarged area a column of the specialized logic blocks. Each specialized logic block includes a random access memory (RAM), a processor, a plurality of terminals, and a dedicated interface coupled between the RAM and the processor and further coupled to the general interconnect structure of the new PLD via the plurality of terminals. Each specialized logic block has a height equal to a height of a first group of removed BRAM blocks. For each specialized logic block, the plurality of terminals has corresponding locations to corresponding terminals in the first group of removed BRAM blocks.